// 脚本：regenerator.js
// 注意：仅用于注入类库函数，不允许存储页面组件等数据
const injectRef = Object.getPrototypeOf(global) || global;
// 注入regeneratorRuntime
injectRef.regeneratorRuntime = require('@babel/runtime/regenerator');
// 如果使用的 hap-toolkit 版本低于0.0.38(babel 版本低于 7)，则按下面的方式引入
// injectRef.regeneratorRuntime = require('babel-runtime/regenerator')

var fetch = require('@system.fetch');
var storage = require('@system.storage');

var BASE_HOST_URL = 'https://appdata.shuhai.com';
// var BASE_HOST_URL = 'http://192.168.3.187:8089';
// var BASE_HOST_URL = 'http://113.140.9.50:8089';
var API_BASE_URL = BASE_HOST_URL + '/ishuhai/';

var headers = {};

// function getAuth(next) {
//   storage.get({
//     key: 'auth',
//     success: function(data) {
//       headers.Cookie = data
//       next(true)
//     },
//     fail: function(data, code) {
//       next(false)
//     }
//   })
// }

function getAuth() {
  return new Promise((resolve, reject) => {
    storage.get({
      key: 'auth',
      success: function (data) {
        headers.Cookie = data;
        resolve(true)
      },
      fail: function (data, code) {
        resolve(false)
      }
    })
  })
}

function realFetch(url, data = null, method = 'get') {
  // console.log('┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━')
  // console.log('┃ url: ', API_BASE_URL + url)
  // console.log('┃ method: ', method)
  // console.log('┃ data: ', JSON.stringify(data.body))
  // console.log('┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━')

  return new Promise((resolve, reject) => {
    fetch.fetch({
      url: API_BASE_URL + url,
      data: data.body,
      // header: headers,
      // header: {
      //   "content-type": 'multipart/form-data;boundary=' + data.timestamp + '; charset=UTF-8'
      // },
      method: method,
      success: function (data) {
        resolve(data)
        // console.log("success:" + JSON.stringify(data));
      },
      fail: function (data, code) {
        reject(data);
        console.log(JSON.stringify(data) + "fail:" + code);
      }
    })
  })
}

async function withAuth(url, data = null, method = 'get', canSkip = false) {
  const auth = await getAuth();
  if (auth || canSkip) {
    return realFetch(url, data, method);
  } else {
    return new Promise((resolve, reject) => {
      reject('请先登录！');
    });
  }
}

function post(url, data = null, config = {}) {
  if (config.withAuth) {
    return withAuth(url, data, 'post', config.canSkip)
  } else {
    return realFetch(url, data, 'post')
  }
}

function get(url, data = null, config = {}) {
  if (config.withAuth) {
    return withAuth(url, data, 'get', config.canSkip)
  } else {
    return realFetch(url, data, 'get')
  }
}

export default {
  /*********************************用户相关接口*********************************/
  /**
   * 用户注册
   */
  register(params) {
    return post('quickapp/register', params)
  },
  /**
   * 用户登录
   */
  login(params) {
    return post('quickapp/login', params)
  },
  /**
   * 手机号登录获取验证码
   */
  getphonelogincode(params) {
    return post('quickapp/getphonelogincode', params)
  },
  /**
   * 手机号登录
   */
  phonelogin(params) {
    return post('quickapp/phonelogin', params)
  },
  /**
   * 绑定手机号获取验证码
   */
  sms(params) {
    return post('quickapp/sms', params)
  },
  /**
   * 绑定手机号提交
   */
  checksmscode(params) {
    return post('quickapp/checksmscode', params)
  },
  /**
   * 意见反馈
   */
  feedback(params) {
    return post('quickapp/feedback', params)
  },
  /**
   * 用户签到
   */
  signin(params) {
    return post('quickapp/signin', params)
  },
  /**
   * 获取签到信息
   */
  checkins(params) {
    return post('quickapp/checkins', params)
  },
  /**
   * 免费领取三天阅读权限
   */
  receivenewuseraward(params) {
    return post('quickapp/receivenewuseraward', params)
  },
  /**
   * 获取我的评论
   */
  myviews(params) {
    return post('quickapp/myviews', params)
  },
  /**
   * 获取我的消息
   */
  inbox(params) {
    return post('quickapp/inbox', params)
  },
  /**
   * 删除我的消息
   */
  delmessage(params) {
    return post('quickapp/delmessage', params)
  },
  /**
   * 获取赠币记录
   */
  myfreelycoin(params) {
    return post('quickapp/myfreelycoin', params)
  },
  /**
   * 获取投票、打赏记录
   */
  votedetail(params) {
    return post('quickapp/votedetail', params)
  },
  /*********************************相关配置信息接口*********************************/
  /**
   * 获取欢迎页
   */
  welcomepic(params) {
    return post('quickapp/welcomepic', params)
  },
  /**
   * 获取搜索热词
   */
  hotsearchword(params) {
    return post('quickapp/hotsearchword', params)
  },
  /**
   * 获取书籍关键字搜索列表
   */
  search(params) {
    return post('quickapp/search', params)
  },
  /*********************************获取书籍信息、书籍列表及阅读相关接口*********************************/
  /**
   * 获取推荐书籍（书架）
   */
  bookcasebooks(params) {
    return post('quickapp/bookcasebooks', params)
  },
  /**
   * 获取书架书籍(服务器书籍同步到app上)
   */
  bookcase(params) {
    return post('quickapp/bookcase', params)
  },
  /**
   * 删除云端记录书籍
   */
  delbookcase(params) {
    return post('quickapp/delbookcase', params)
  },
  /**
   * 区块取书公共接口，用途如下
   * 1、获取首页banner列表
   * 2、获取男、女频封神榜列表
   * 3、获取首页热门推荐列表
   * @param {page(非必填),pagesize(非必填),bid} params 
   */
  block(params) {
    return post('quickapp/block', params)
  },
  /**
   * 1、获取排行榜列表
   * 2、获取首页榜单推荐列表
   */
  top(params) {
    return post('quickapp/top', params)
  },
  /**
  * 获取首页专题推荐列表
  */
  subjectlist(params) {
    return post('quickapp/subjectlist', params)
  },
  /**
  * 获取限免书籍
  */
  dayfree(params) {
    return post('quickapp/dayfree', params)
  },
  /**
  * 获取当前书籍作者所有书籍作品
  */
  articleauthor(params) {
    return post('quickapp/articleauthor', params)
  },
  /**
  * 书籍详情页面猜你喜欢
  */
  guessyourlike(params) {
    return post('quickapp/guessyourlike', params)
  },
  /**
   * 获取书籍目录
   */
  catlog(params) {
    return post('quickapp/catlog', params)
  },
  /**
   * 获取章节内容或者听书章节链接
   */
  onechapter(params) {
    return post('quickapp/onechapter', params)
  },
  /**
   * 根据书籍id获取书籍信息
   */
  article(params) {
    return post('quickapp/article', params)
  },
  /**
   * 本地书架同步到服务器书架(app书架上书同步到服务器)
   */
  addbookcase(params) {
    return post('quickapp/addbookcase', params)
  },
  /**
   * 获取书籍阅读记录
   */
  getnonebookreadlog(params) {
    return post('quickapp/getnonebookreadlog', params)
  },
  /**
   * 自动订阅下一章
   */
  autobuy(params) {
    return post('quickapp/autobuy', params)
  },
  /**
   * 购买指定章节
   */
  buychapter(params) {
    return post('quickapp/buychapter', params)
  },
  /**
   * 书籍全本购买
   */
  wholesale(params) {
    return post('quickapp/wholesale', params)
  },
  /**
   * 章节订阅信息页面，获取全本购买信息
   */
  remainingchapterinfo(params) {
    return post('quickapp/remainingchapterinfo', params)
  },
  /**
   * 章节订阅信息页面，订阅全部章节
   */
  batchbuy(params) {
    return post('quickapp/batchbuy', params)
  },
  /**
   * 获取自动订阅记录
   */
  autobuylist(params) {
    return post('quickapp/autobuylist', params)
  },
  /*********************************充值、消费相关接口*********************************/
  /**
   * 书海币充值信息
   */
  quickpayparams(params) {
    return post('quickapp/quickpayparams', params)
  },
  /**
   * 支付下单
   */
  quickapppay(params) {
    return post('quickapp/quickapppay', params)
  },
  /**
   * 充值记录
   */
  charge(params) {
    return post('quickapp/charge', params)
  },
  /**
   * 消费记录
   */
  paylog(params) {
    return post('quickapp/paylog', params)
  },
  /**
   * 支付宝回调
   */
  RSANotifyReceiver(params) {
    return post('callback/RSANotifyReceiver', params)
  }
}